《Android开源库》 Essential介绍(译文)

简介

GreenRobot Essentials为Android和Java项目提供通用的实用工具。 在Android开发的早期,它就已经存在了。整个库很简单,jar包 <100k,在效率和性能上也是独树一帜的。

特性

Essentials是一个通用类的集合,我们发现在许多场合都很有用。

使用要点的主要原因:

  • 在项目中编写较少的代码
  • 专门实现与标准API相比更好的性能
  • 超轻量级:<100k
  • 兼容Android和Java

特征:

  • IO utilities 在IO流(基于字节和字符)和digests(例如MD5和SHA-1)上起到很大的帮助作用。
  • File utilities 简化了从字符串/字节/对象写入文件或向文件写入字符串/字节/对象。还包括从文件获取哈希和复制文件。
  • String utilities允许有效分割和连接字符串,hex和MD5创建,以及其他有用的字符串助手。
  • Better hash functions: :我们的Murmur3实现提供了优越的散列质量,并且胜过标准的Java散列函数
  • Specialized Streams: 例如优化的PipedOutputStream替换(基于循环字节缓冲器)
  • Hash set and map for primitive long keys 原始长键的哈希集和映射优于Java集合API的通用版本
  • Multimaps多映射提供了列表或集合的映射,以简化为单个键存储多个值
  • Object cache 对象缓存具有强大的配置选项:软/弱/强引用,最大大小和基于时间的到期
  • Base64实现(从iharder.net捆绑)用于较低版本的Java和Android(包括输入/​​输出流)

集成

1. 添加到工程

使用最新版本

1
compile 'org.greenrobot:essentials:3.0.0-RC1'

或者使用老版本

1
compile 'de.greenrobot:java-common:2.3.1'

针对Maven

1
2
3
4
5
<dependency>
<groupId>de.greenrobot</groupId>
<artifactId>java-common</artifactId>
<version>2.3.1</version>
</dependency>

2. 示例代码

1
2
3
4
5
6
7
8
9
// Get all bytes from stream and close the stream safely
byte[] bytes = IoUtils.readAllBytesAndClose(inputStream);

// Read the contents of an file as a string (use readBytes to get byte[])
String contents = FileUtils.readUtf8(file);

// How many days until new year's eve?
long time2 = DateUtils.getTimeForDay(2015, 12, 31);
int daysToNewYear = DateUtils.getDayDifference(time, time2);

多映射Map(版本v2.2加入)

1
2
3
4
5
ListMap<String,String> multimap = new ListMap<>();
multimap.putElement("a", "1");
multimap.putElement("a", "2");
multimap.putElement("a", "3");
List<String> strings = multimap.get("a"); //Contains "1", "2", and "3"

散列函数实现 java.util.zip.Checksum,所以下面的代码可能看起来很眼熟

1
2
3
Murmur3A murmur = new Murmur3A();
murmur.update(bytes);
long hash = murmur.getValue();

所有散列可以通过多次调用update(…)来逐步计算。 我们的Murmur3A实现更进一步,以非常有效的方式提供原始数据的更新:

1
2
3
4
5
6
7
8
9
10
11
12
// reuse the previous instance and start over to calculate a new hash
murmur.reset();

murmur.updateLong(42L);

// Varargs and arrays are supported natively, too
murmur.updateInt(2014, 2015, 2016);

murmur.updateUtf8("And strings, of course");

// Hash for the previous update calls. No conversion to byte[] necessary.
hash = murmur.getValue();

实用程序类是直接的,没有依赖性,所以你应该很好地通过看看他们的源代码来掌握它们。 大多数方法名称应该是自解释的,通常你会在需要的地方找到JavaDocs。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×